<!DOCTYPE HTML>
<script src="../resources/gc.js"></script>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>

<!--

Accessibility Object Model
Explainer: https://github.com/WICG/aom/blob/master/explainer.md
Spec: https://wicg.github.io/aom/spec/

-->

<div id="no-int-props" role="button">Click me!</div>

<div id="list" role="list">
  <div id="listitem" role="listitem" aria-setSize="10" aria-posinset="3"></div>
</div>

<script>

test(function(t) {
    assert_true(internals.runtimeFlags.accessibilityObjectModelEnabled);
}, "Make sure that Accessibility Object Model is enabled");

promise_test(async function(test) {
    var element = document.getElementById("no-int-props");
    computedAXNode = await window.getComputedAccessibleNode(element);
    assert_equals(computedAXNode.role, "button");
    assert_equals(computedAXNode.colCount, null);
    assert_equals(computedAXNode.colIndex, null);
    assert_equals(computedAXNode.colSpan, null);
    assert_equals(computedAXNode.level, null);
    assert_equals(computedAXNode.posInSet, null);
    assert_equals(computedAXNode.rowCount, null);
    assert_equals(computedAXNode.rowIndex, null);
    assert_equals(computedAXNode.rowSpan, null);
    assert_equals(computedAXNode.setSize, null);
}, "computedAccessibleNode has nullable int properties.");

promise_test(async function(test) {
    var listitem = document.getElementById("listitem");
    computedAXNode = await window.getComputedAccessibleNode(listitem);
    assert_equals(computedAXNode.posInSet, 3);
    assert_equals(computedAXNode.setSize, 10);
}, "computedAccessibleNode.setSize and computedAccessibleNode.posInSet");

</script>

<div id="first-heading" role="heading" aria-level="1">Satu</div>
<div id="second-heading" role="heading" aria-level="2">Dua</div>
<div id="third-heading" role="heading" aria-level="2">Tiga</div>

<script>

promise_test(async function(test) {
    var heading1 = document.getElementById("first-heading");
    var heading2 = document.getElementById("second-heading");
    var heading3 = document.getElementById("third-heading");
    computedAXNode1 = await window.getComputedAccessibleNode(heading1);
    computedAXNode2 = await window.getComputedAccessibleNode(heading2);
    computedAXNode3 = await window.getComputedAccessibleNode(heading3);

    assert_equals(computedAXNode1.level, 1);
    assert_equals(computedAXNode2.level, 2);
    assert_equals(computedAXNode3.level, 2);
}, "computedAccessibleNode.level");

// TODO(meredithl): add in tests for (col | row) * (index | index | span)

</script>
